home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / intrvews / xgrab.lha / xgrab / ui / select.c < prev    next >
C/C++ Source or Header  |  1990-03-06  |  1KB  |  62 lines

  1. /**
  2.    GRAB Graph Layout and Browser System
  3.  
  4.    Copyright (c) 1986, 1988 Regents of the University of California
  5.    Copyright (c) 1989, Tera Computer Company
  6.  **/
  7.  
  8.   /* select.c -- routine to get ranges */
  9.  
  10. #include "digraph.h"
  11. #include "screen.h"
  12.  
  13. FindRange(digraph, box)
  14. DIGRAPH *digraph;
  15. BOX *box;
  16. {
  17.     NODE *node;
  18.     int first = 1;
  19.  
  20.     box->min_x = box->min_y = box->max_x = box->max_y = 0;
  21.  
  22.     each_node(digraph, node)
  23.     loop
  24.         if (first) 
  25.     {
  26.             box->min_x = X_left(Node_member(node));
  27.             box->max_x = X_right(Node_member(node));
  28.             box->min_y = Y_bottom(Node_member(node));
  29.             box->max_y = Y_top(Node_member(node));
  30.  
  31.             first = FALSE;
  32.         continue;
  33.         }
  34.             
  35.         if (X_left(Node_member(node)) < box->min_x)
  36.     {
  37.             box->min_x = X_left(Node_member(node));
  38.     }
  39.  
  40.         if (X_right(Node_member(node)) > box->max_x)
  41.     {
  42.             box->max_x = X_right(Node_member(node));
  43.     }
  44.  
  45.         if (Y_bottom(Node_member(node)) < box->min_y)
  46.     {
  47.             box->min_y = Y_bottom(Node_member(node));
  48.     }
  49.  
  50.         if (Y_top(Node_member(node)) > box->max_y)
  51.     {
  52.             box->max_y = Y_top(Node_member(node));
  53.     }
  54.     endloop
  55.  
  56.     if ((box->min_x == box->max_x) || (box->min_y == box->max_y)) 
  57.     {
  58.         box->max_x++;
  59.         box->max_y++;
  60.     }
  61. }
  62.